package com.gang.mars.basic.generictype.demo9.selectors;

import com.gang.mars.basic.generictype.demo7.GangMergedAnnotation;
import com.gang.mars.basic.generictype.demo9.annotation.GangAnnotation;

/**
 * @Author：gang.chen
 * @Date：2023/6/19 13:32
 */
public abstract class GangMergedAnnotationSelectors {

    public static  final GangMergedAnnotationSelector<?> FIRST_DIRECTLY_DECLARED = new GangFirstDirectlyDeclared();

    public static <A extends GangAnnotation> GangMergedAnnotationSelector<A> firstDirectlyDeclared()
    {
        return (GangMergedAnnotationSelector<A>) FIRST_DIRECTLY_DECLARED;
    }

    private static class GangFirstDirectlyDeclared implements GangMergedAnnotationSelector<GangAnnotation>
    {

        @Override
        public GangMergedAnnotation<GangAnnotation> select(GangMergedAnnotation<GangAnnotation> existing, GangMergedAnnotation<GangAnnotation> candidate) {

            //TODO

            return null;
        }
    }
}
